2020年1月25日現在では Docker パッケージも各バージョンも削除機能は無いようでした。しばらく時間を空けて再度やってみようと思います。
このページでは一応やったことを残し、本格的に実装されたらアーカイブ化します。
やったこと
GitHub パーソナルアクセストークン取得
画像のようにrepo
とread:packages
、delete:pacakges
権限を持つアクセストークンを作ります。
パッケージの ID と各バージョン ID 取得
まず最初に画像パッケージ画面のココの番号はパッケージ ID でもバージョン ID でもないようです。
これらを取得するには API を叩きます。GraphQL でパッケージの ID と各バージョン ID を以下のようなクエリを組み立て、
query PackageVersions($owner: String!) {
user(login: $owner) {
registryPackagesForQuery(first: 10) {
edges {
node {
id
name
versions(first: 10) {
nodes {
id
}
}
}
}
}
}
}
以下のような CURLリクエストすると、
curl -sSf -X POST \
-H "Accept: application/vnd.github.package-deletes-preview+json" \
-H "Authorization: bearer " \
-d '{"query": ""}' \
https://api.github.com/graphql
以下のような JSON が得られます。
{
"data": {
"user": {
"registryPackagesForQuery": {
"edges": [
{
"node": {
"id": "",
"name": "",
"versions": {
"nodes": [
{
"id": ""
},
{
"id": ""
},
]
}
}
},
{
"node": {
"id": "",
"name": "",
"versions": {
"nodes": [
{
"id": ""
}
]
}
}
},
]
}
}
}
}
このnode.id
が(恐らく)パッケージ ID、node.versions.nodes[].id
が(恐らく)バージョン ID です。
削除しようとしてみる
またクエリを組み立てます。
mutation {
deletePackageVersion(input: {packageVersionId: ""}) {
success
}
}
それを CURL で送ります。
curl -sSf -X POST \
-H "Accept: application/vnd.github.package-deletes-preview+json" \
-H "Authorization: bearer b093587f422930d86c24106dfc30a4ae06100766" \
-d '{"query": ""}' \
https://api.github.com/graphql
結果は以下のようでした。
{
"data": {
"deletePackageVersion": null
},
"errors": [
{
"type": "UNPROCESSABLE",
"path": [
"deletePackageVersion"
],
"locations": [
{
"line": 1,
"column": 12
}
],
"message": "Version deletion is currently unsupported for docker. For more on our deletion policy, see https://help.github.com/articles/about-github-package-registry/#deleting-a-package."
}
]
}
Docker のそれはまだサポートされていないようです。パッケージを削除できそうな要素は他になさそうなので今の所無理そうでした。